#ifndef __oop4_2DArrayCpp_h
#define __oop4_2DArrayCpp_h

#include <iostream>
using namespace std;
class Elem_TD
{
public:
	Elem_TD();
	Elem_TD(size_t Size,void (*pItsFunction)(void* elem));
	~Elem_TD();
	size_t getSize();
	void (*pItsFunction)(void* elem);
	Elem_TD & operator=(Elem_TD&);
private:
	size_t ItsSizeOfElement;
};
class Array
{
public:
	Array();
	Array(int length, int width, Elem_TD elem);
	~Array();
	
	void** getMass();
	int getLength();
	int getWidth();
	Elem_TD getType();

	void* getElement(int lengthCoord, int widthCoord);
	void setElement(int x, int y, void* InputObject);
	void DrawArray();
private:
	void **ItsMass;
	int ItsLength;
	int ItsWidth;
	Elem_TD ItsElement;
};
void DrawChar(void* elem);
void DrawDouble(void* elem);
void DrawInt(void* elem);
#endif